一個完美的程式追求高內聚 & 低耦合
內聚性:模組本身可獨立完成功能
耦合性:模組跟模組相依程度
起初學習程式語言時常犯錯誤就是
- 很多重複代碼構成一個功能但不會寫成一個Method做呼叫
- 把很多功能放在一個Method裡
- 不會利用介面而多用繼承實作
對初學者來說寫出來一個可以Run的code就很開心
但面對到職場就會造成同事們的困擾,又計算機概論也頂多提到物件導向程式設計特性(繼承、封裝、多型)
就來以上三點常犯錯誤與內聚性/耦合性的關係來思考
- 未將執行同一功能程式碼包裝成一個方法,一條一條的編碼構成一個功能,即代碼間的耦合性很高,少了哪一段都無法作業,日後造成維護時都要修改很多行相同代碼,遺漏就很容易出bug,這也是為甚麼某些工程師很不喜歡維護或更改代碼的原因。
- 一個Method涵蓋太多相關連續功能,雖然一個Method可以完成一套流程看似內聚性高很完美,但假設Method的流程有變動,不就整個打掉重來,又用到相關Method編碼地方也是要修正,所以會聽到較好的做法利用封裝將多個Method聚合成一個Method。
- 子類別繼承雖只能繼承一個父類別,但本身也可以被其它子類別繼承,往往變成了一棵大樹,當要編修該方法時就造成諸多困擾(每棵樹的分支都要一一確認),太多繼承提高耦合性,故一般都會採用介面取代繼承
綜上就可以看出程式編碼追求高內聚低耦合
這也可以理解為甚麼Java會把goto從Keyword移除